๋คํธ์ํฌ ์ ๋ณด API๋ฅผ ํ์ฉํ์ฌ ์ฐ๊ฒฐ ํ์ง์ ๊ฐ์งํ๊ณ ์ ์ํ ๋ก๋ฉ ์ ๋ต์ ๊ตฌํํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
๋คํธ์ํฌ ์ ๋ณด API: ์ฐ๊ฒฐ ํ์ง ๊ฐ์ง ๋ฐ ์ ์ํ ๋ก๋ฉ์ผ๋ก ์ฌ์ฉ์ ๊ฒฝํ ํฅ์
์ ์ ๋ ์ฐ๊ฒฐ๋๋ ์ค๋๋ ์ ์ธ์์์ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์์๋ ๋๊น ์๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ด ๋ฌด์๋ณด๋ค ์ค์ํฉ๋๋ค. ์ ์ธ๊ณ ์ฌ์ฉ์๋ ๊ณ ์ ๊ด์ฌ์ ๋ถํฐ ๊ฐํ์ ์ธ ๋ชจ๋ฐ์ผ ์ฐ๊ฒฐ๊น์ง ๋ฐฉ๋ํ ์ธํฐ๋ท ์๋ ์คํํธ๋ผ์ ํตํด ์น ์ฝํ ์ธ ์ ์ก์ธ์คํฉ๋๋ค. ์ด๋ฌํ ๊ฒฉ์ฐจ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ผ๊ด๋๊ณ ์ฆ๊ฑฐ์ด ๊ฒฝํ์ ์ ๊ณตํ๊ณ ์ ํ๋ ์น ๊ฐ๋ฐ์์๊ฒ ์๋นํ ๊ณผ์ ๋ฅผ ์๊ฒจ์ค๋๋ค. ๋คํํ ํ๋ ์น ๊ธฐ์ ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, ๋คํธ์ํฌ ์ ๋ณด API๋ ์ด๋ฌํ ๋ ธ๋ ฅ์์ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก ๋ถ๊ฐ๋ฉ๋๋ค. ์ด API๋ ๊ฐ๋ฐ์์๊ฒ ์ฌ์ฉ์์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ํ ์ค์ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ์ฌ ์ ์ํ ๋ก๋ฉ๊ณผ ๊ฐ์ ์ง๋ฅํ ์ ๋ต์ ๊ตฌํํ ์ ์๋๋ก ํ์ฌ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๋ง์กฑ๋๋ฅผ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
๋คํธ์ํฌ ์ ๋ณด API ์ดํดํ๊ธฐ
์ข ์ข Navigator.connection ์ธํฐํ์ด์ค๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ๋คํธ์ํฌ ์ ๋ณด API๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉ์์ ์ฅ์น์ ๋ํ ๊ธฐ๋ณธ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ํ ์ ๋ณด์ ์ก์ธ์คํ ์ ์๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด API๋ ๋คํธ์ํฌ์ ํ์ง ๋ฐ ํน์ฑ์ ์ถ๋ก ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ฃผ์ ๋ฉํธ๋ฆญ์ ์ ๊ณตํ์ฌ ์ฝํ ์ธ ๊ฐ ์ ๊ณต๋๋ ๋ฐฉ์์ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
๋คํธ์ํฌ ์ ๋ณด API์ ์ฃผ์ ์์ฑ
์ด API๋ ๊ฐ๋ฐ์๊ฐ ํ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ค์ํ ์์ฑ์ ๋ ธ์ถํฉ๋๋ค.
type: ์ด ์์ฑ์ ์ฌ์ฉ์๊ฐ ์ฐ๊ฒฐ๋ ๋คํธ์ํฌ ์ ํ(์:'wifi','cellular','ethernet','bluetooth','vpn','none')์ ๋ํ๋ ๋๋ค. ํ์ง์ ์ง์ ์ ์ธ ์ธก์ ์ ์๋์ง๋ง ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด,'cellular'์ฐ๊ฒฐ์'wifi'๋๋'ethernet'์ฐ๊ฒฐ๋ณด๋ค ๋ณ๋์ด ์ฌํ ์ ์์ต๋๋ค.effectiveType: ์ด๊ฒ์ ์๋ง๋ ์ ์ํ ๋ก๋ฉ์ ๊ฐ์ฅ ๊ฐ์น ์๋ ์์ฑ์ผ ๊ฒ์ ๋๋ค. ์ด ์์ฑ์ ๋คํธ์ํฌ์ ํจ๊ณผ์ ์ธ ์ฐ๊ฒฐ ์ ํ์ ์ถ์ ํ์ฌ'slow-2g','2g','3g'๋๋'4g'๋ก ๋ถ๋ฅํฉ๋๋ค. ์ด๋ ์๋ณต ์๊ฐ(RTT) ๋ฐ ๋ค์ด๋งํฌ ์ฒ๋ฆฌ๋๊ณผ ๊ฐ์ ๋ฉํธ๋ฆญ์ ๊ฒฐํฉํ์ฌ ๊ฒฐ์ ๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ถ๋ก ์ ์ํด ํด๋ฆฌ์คํฑ์ ์ฌ์ฉํ์ฌ ๋จ์ ์ฒ๋ฆฌ๋๋ณด๋ค ์ธ์๋ ์๋๋ฅผ ๋ณด๋ค ์ค์ง์ ์ผ๋ก ํํํฉ๋๋ค.downlink: ์ด ์์ฑ์ ์ด๋น ๋ฉ๊ฐ๋นํธ(Mbps) ๋จ์์ ํ์ฌ ๋ค์ด๋งํฌ ์ฒ๋ฆฌ๋์ ์ถ์ ํฉ๋๋ค. ์ฅ์น๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๋ ์๋๋ฅผ ์์น๋ก ์ ๊ณตํฉ๋๋ค.downlinkMax: ์ด ์์ฑ์ ์ด๋น ๋ฉ๊ฐ๋นํธ(Mbps) ๋จ์์ ์ต๋ ๋ค์ด๋งํฌ ์ฒ๋ฆฌ๋์ ์ถ์ ํฉ๋๋ค. ์ค์๊ฐ ์ ์์ ๋ ์์ฃผ ์ฌ์ฉ๋์ง๋ง ์ฐ๊ฒฐ์ ์ด๋ก ์ ์ต๋ ์ฉ๋์ ๋ํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.rtt: ์ด ์์ฑ์ ๋ฐ๋ฆฌ์ด(ms) ๋จ์์ ์๋ณต ์๊ฐ(RTT)์ ์ถ์ ํฉ๋๋ค. RTT๋ ์ง์ฐ ์๊ฐ ์ธก์ ์ผ๋ก, ์์ ๋ฐ์ดํฐ ํจํท์ ์๋ฒ๋ก ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ํ๋ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก RTT๊ฐ ๋ฎ์์๋ก ์ฐ๊ฒฐ ์๋ต์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.saveData: ์ด ๋ถ์ธ ์์ฑ์ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋๋ ์ด์ ์ฒด์ ์์ ๋ฐ์ดํฐ ์ ์ฝ ๋ชจ๋๋ฅผ ํ์ฑํํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.true์ด๋ฉด ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ ์ฌ์ฉ๋์ ์ธ์ํ๊ณ ๋ ๊ฐ๋ฒผ์ด ์ฝํ ์ธ ๋ฅผ ์ ํธํ ์ ์์์ ์์ฌํฉ๋๋ค.
๋คํธ์ํฌ ์ ๋ณด API ์ก์ธ์ค
์ต์ ๋ธ๋ผ์ฐ์ ์์๋ ๋คํธ์ํฌ ์ ๋ณด API์ ์ก์ธ์คํ๋ ๊ฒ์ด ๊ฐ๋จํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก navigator.connection ๊ฐ์ฒด์ ์ํธ ์์ฉํฉ๋๋ค.
const connection = navigator.connection;
function logConnectionInfo() {
if (connection) {
console.log(`Network Type: ${connection.type}`);
console.log(`Effective Type: ${connection.effectiveType}`);
console.log(`Downlink Throughput: ${connection.downlink} Mbps`);
console.log(`RTT: ${connection.rtt} ms`);
console.log(`Save Data Enabled: ${connection.saveData}`);
} else {
console.log('Network Information API not supported or unavailable.');
}
}
logConnectionInfo();
// Listen for changes in connection type
connection.addEventListener('change', () => {
console.log('Network connection changed!');
logConnectionInfo();
});
์ง์์ ๋ธ๋ผ์ฐ์ ๋ฐ ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก navigator.connection์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ํ API๋ ์ฃผ๋ก ๋ณด์ ์ปจํ
์คํธ(HTTPS)์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. 'change' ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ ๋คํธ์ํฌ ์กฐ๊ฑด์ด ๋ณ๋ํจ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์
์ ๋์ ์ผ๋ก ์กฐ์ ํ๋ ๋ฐ ํนํ ์ค์ํฉ๋๋ค.
์ ์ํ ๋ก๋ฉ์ ํ
์ ์ํ ๋ก๋ฉ์ ์ฌ์ฉ์์ ๋คํธ์ํฌ ์กฐ๊ฑด, ์ฅ์น ๊ธฐ๋ฅ ๋ฐ ๊ธฐํ ์ปจํ ์คํธ ์ ๋ณด์ ๋ฐ๋ผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ก๋ํ๋ ์ฝํ ์ธ ์ ๋ฆฌ์์ค๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ๋ ๊ธฐ์ ์ ๋๋ค. ๋คํธ์ํฌ ์ ๋ณด API๋ ํจ๊ณผ์ ์ธ ์ ์ํ ๋ก๋ฉ ์ ๋ต์ ์ด์์ ๋๋ค.
์ ์ํ ๋ก๋ฉ์ ์ ํ์ํ๊ฐ์?
์ ์ํ ๋ก๋ฉ์ ๊ตฌํํ๋ ์ด์ ์ ๋ง์ผ๋ฉฐ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ๋น์ฆ๋์ค ๋ชฉํ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ์ฑ๋ฅ ํฅ์: ๋๋ฆฐ ๋คํธ์ํฌ ์ฌ์ฉ์์๊ฒ ๋ ๋น ๋ฅธ ๋ก๋ ์๊ฐ.
- ๋ฐ์ดํฐ ์๋น ๊ฐ์: ํนํ ์ ์ธ๊ณ ๋ง์ ์ง์ญ์์ ํํ ๋ณผ ์ ์๋ ์ ํ์ ์ด๊ฑฐ๋ ๋น์ผ ๋ฐ์ดํฐ ์๊ธ์ ๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์์๊ฒ ์ค์ํฉ๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ์ฐธ์ฌ: ์ฌ์ฉ์๋ ์ฐ๊ฒฐ์ ๊ด๊ณ์์ด ๋น ๋ฅด๊ฒ ๋ก๋๋๊ณ ์ํํ๊ฒ ์๋ํ๋ ์ฌ์ดํธ์ ๋ ์ค๋ ๋จธ๋ฌด๋ฅผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- ๋ฎ์ ์ดํ๋ฅ : ๋๋ฆฐ ๋ก๋ฉ์ ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ๋ฅผ ํฌ๊ธฐํ๋ ์ฃผ์ ์ด์ ์ ๋๋ค.
- ๋ ๋์ ๋ฆฌ์์ค ํ์ฉ: ๊ณ ํด์๋ ์ ์ ์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋ ์ฌ์ฉ์์๊ฒ ๋์ญํญ ๋ญ๋น๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- ์ ๊ทผ์ฑ: ๋ถ์์ ํ ์ธํฐ๋ท ์ก์ธ์ค ์ฌ์ฉ์๋ฟ๋ง ์๋๋ผ ๋ ๋์ ์ฌ์ฉ์์๊ฒ ์น ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋คํธ์ํฌ ์ ๋ณด API๋ฅผ ์ฌ์ฉํ ์ ์ํ ๋ก๋ฉ ์ ๋ต
๋คํธ์ํฌ ์ ๋ณด API๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋ฐ์๋ ๋ค์ํ ์ ์ํ ๋ก๋ฉ ์ ๋ต์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๋ต์ ์ข ์ข ์ ์ง์ ํฅ์์ ๋ฒ์ฃผ์ ์ํ๋ฉฐ, ๊ธฐ๋ณธ ๊ฒฝํ์ ์ ๊ณตํ๊ณ ๋ ๋์ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๋ง๊ฒ ํฅ์๋ฉ๋๋ค.
1. ์ ์ํ ์ด๋ฏธ์ง ๋ก๋ฉ
์ด๋ฏธ์ง๋ ์ข ์ข ํ์ด์ง ํฌ๊ธฐ์ ๊ฐ์ฅ ํฐ ์์ธ์ ๋๋ค. ์ฐ๊ฒฐ ์๋์ ๋ฐ๋ผ ์ ์ ํ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ ๊ณตํ๋ฉด ์ธ์๋ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๋ฎ์ ๋์ญํญ (์:
'slow-2g','2g'): ํจ์ฌ ๋ ์๊ณ ์ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋์ ์์ถ๋ฅ ์ WebP์ ๊ฐ์ ์ด๋ฏธ์ง ํ์์ ์ฌ์ฉํ๊ฑฐ๋ ์ฐ๊ฒฐ์ด ๊ฐ์ ๋๋ฉด ๋ ๋์ ํ์ง์ ๋ฒ์ ์ผ๋ก ๋์ฒด๋๋ ํ๋ ์ด์คํ๋ ์ด๋ฏธ์ง ๋๋ ์ ํ์ง ์ด๋ฏธ์ง ํ๋ ์ด์คํ๋(LQIP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. - ์ค๊ฐ ๋์ญํญ (์:
'3g'): ์ค๊ฐ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๋ง์ ๋ชจ๋ฐ์ผ ์ฌ์ฉ์์๊ฒ ์ข์ ๊ท ํ์ ๋๋ค. - ๋์ ๋์ญํญ (์:
'4g','wifi'): ๊ณ ํด์๋์ ์๊ฐ์ ์ผ๋ก ํ๋ถํ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค.
JavaScript ์ฌ์ฉ ์:
const connection = navigator.connection;
function getImageUrl(baseName, extension = 'jpg') {
let resolution = 'medium'; // Default
if (connection) {
if (connection.effectiveType === 'slow-2g' || connection.effectiveType === '2g') {
resolution = 'small';
} else if (connection.effectiveType === '4g' || connection.effectiveType === '5g') {
resolution = 'large';
}
}
return `/images/${baseName}-${resolution}.${extension}`;
}
// In your HTML or DOM manipulation:
// const imgElement = document.createElement('img');
// imgElement.src = getImageUrl('product-photo');
// document.body.appendChild(imgElement);
JavaScript ์ธ: HTML์ <picture> ์์์ <img>์ srcset ์์ฑ์ ๋ฐ์ํ ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋ค์ดํฐ๋ธ ๋ฐฉ๋ฒ์
๋๋ค. effectiveType์ ์ํด ๋คํธ์ํฌ ์ ๋ณด API๋ฅผ ์ง์ ์ฌ์ฉํ์ง๋ ์์ง๋ง, ๋ทฐํฌํธ ํฌ๊ธฐ์ ํฝ์
๋ฐ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ์ ์ด๋ฏธ์ง ์์ค๋ฅผ ์ ํํ๋๋ก ๋ธ๋ผ์ฐ์ ๋ฅผ ํ์ฉํฉ๋๋ค. JavaScript์ ๊ฒฐํฉํ์ฌ ๋คํธ์ํฌ ์์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ ํ์ ๋์ฑ ์ธ๋ฐํ๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.
2. ์ ์ํ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ
๋น๋์ค ์ฝํ ์ธ ๋ ๋์ญํญ์ด ๋ง์ด ํ์ํฉ๋๋ค. ์ข์ ๋น๋์ค ์ฌ์ ๊ฒฝํ์ ์ํด์๋ ์ ์ํ ์คํธ๋ฆฌ๋ฐ์ด ํ์์ ์ ๋๋ค.
- ๋ฎ์ ๋์ญํญ: ๋ฎ์ ํด์๋์ ๋นํธ ์ ์ก๋ฅ ๋ก ๋น๋์ค๋ฅผ ์คํธ๋ฆฌ๋ฐํฉ๋๋ค. ์ฐ๊ฒฐ์ด ๊ทนํ ์ข์ง ์์ ๊ฒฝ์ฐ ์ค๋์ค ์ ์ฉ ์ฌ์์ผ๋ก ๊ธฐ๋ณธ ์ค์ ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ๋์ ๋์ญํญ: ๋ ๋์ ํด์๋(์: HD, 4K)์ ๋นํธ ์ ์ก๋ฅ ๋ก ๋น๋์ค๋ฅผ ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
๋ง์ ์ต์ ๋น๋์ค ํ๋ ์ด์ด(Shaka Player, JW Player, ๋๋ ์ ์ ํ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ Video.js ๋ฑ)๋ HLS ๋ฐ DASH์ ๊ฐ์ ์ ์ํ ๋นํธ ์ ์ก๋ฅ ์คํธ๋ฆฌ๋ฐ(ABS) ๊ธฐ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํฉ๋๋ค. ์ด๋ฌํ ํ๋ ์ด์ด๋ ์ค์๊ฐ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋น๋์ค ํ์ง์ ์๋์ผ๋ก ์กฐ์ ํฉ๋๋ค. navigator.connection์ effectiveType์ ๋ํด ์ง์ ํด๋งํ์ง๋ ์์ง๋ง, ๋ด๋ถ ์๊ณ ๋ฆฌ์ฆ์ ์ข
์ข
์ ์ฌํ ํด๋ฆฌ์คํฑ(RTT, ์ฒ๋ฆฌ๋)์ ์ฌ์ฉํ์ฌ ์ ์ํ ์คํธ๋ฆฌ๋ฐ์ ๋ฌ์ฑํฉ๋๋ค.
3. ์ ์ํ ๊ธ๊ผด ๋ก๋ฉ
์น ๊ธ๊ผด์ ์๋นํ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๋๋ฆฐ ์ฐ๊ฒฐ์์๋ ๋ ๊ฐ๋ฒผ์ด ๊ธ๊ผด ๋ณํ์ ์ ๊ณตํ๊ฑฐ๋ ์ค์ํ์ง ์์ ๊ธ๊ผด ๋ก๋ฉ์ ์ง์ฐํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ฎ์ ๋์ญํญ: ์์คํ ๊ธ๊ผด ๋๋ ๋จ์ผ์ ๊ณ ๋๋ก ์ต์ ํ๋ ๊ธ๊ผด ์ฌ์ฉ์ ๊ณ ๋ คํ์ญ์์ค. ๋ณด์กฐ ๊ธ๊ผด ๋๋ ์ฅ์์ฉ ๊ธ๊ผด ๋ก๋ฉ์ ์ง์ฐํ์ญ์์ค.
- ๋์ ๋์ญํญ: ์ํ๋ ๋ชจ๋ ๊ธ๊ผด ์ ํ๊ตฐ ๋ฐ ๋ณํ์ ๋ก๋ํฉ๋๋ค.
CSS์ font-display์ ๊ฐ์ ๊ธฐ์ ์ ๊ธ๊ผด์ด ๋ก๋๋๊ณ ํ์๋๋ ๋ฐฉ์์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. JavaScript๋ฅผ ์ฌ์ฉํ์ฌ navigator.connection์ ๋ฐ๋ผ ๊ธ๊ผด ๋ก๋ฉ ์ ๋ต์ ์กฐ๊ฑด๋ถ๋ก ์ ์ฉํ ์ ์์ต๋๋ค.
4. ์ ์ํ ๋ฆฌ์์ค ์ฐ์ ์์ ์ง์ ๋ฐ ์ง์ฐ ๋ก๋ฉ
๋ชจ๋ ๋ฆฌ์์ค๊ฐ ์ด๊ธฐ ์ฌ์ฉ์ ๊ฒฝํ์ ๋์ผํ๊ฒ ์ค์ํ์ง๋ ์์ต๋๋ค. ์ค์ํ ๋ฆฌ์์ค์ ์ฐ์ ์์๋ฅผ ์ง์ ํ๊ณ ๋ ์ค์ํ ๋ฆฌ์์ค๋ ์ง์ฐํ์ญ์์ค.
- ๋ฎ์ ๋์ญํญ: ์ค์ํ์ง ์์ JavaScript, CSS ๋ฐ ๊ธฐํ ์ ์ ์ ๋ก๋ฉ์ ์ง์ฐํฉ๋๋ค. ํต์ฌ ์ฝํ ์ธ ์ ๊ธฐ๋ฅ ๋ก๋ฉ์ ์ง์คํฉ๋๋ค.
- ๋์ ๋์ญํญ: ์ ์ฒด ๊ธฐ๋ฅ๊ณผ ํ๋ถํ ๊ธฐ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ๋ก๋ํฉ๋๋ค.
์ด๋ ๋์ ์ผ๋ก JavaScript ๋ชจ๋ ๋๋ CSS ํ์ผ์ ํ์์ ๋ฐ๋ผ ๋คํธ์ํฌ ์กฐ๊ฑด์ด ํ์ฉ๋ ๋๋ง ๋ก๋ํ์ฌ ๊ตฌํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋๋ฆฐ ์ฐ๊ฒฐ ์ฌ์ฉ์๊ฐ ๋น ๋ฅด๊ฒ ๋๋ฌํ์ง ๋ชปํ ์ ์๋ ๋ฒํผ ๋ค์ ์๋ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ ํด๋น JavaScript๋ฅผ ์ง์ฐ ๋ก๋ฉํ ์ ์์ต๋๋ค.
5. ์ ์ํ ์ฝํ ์ธ ๋ฐ ๊ธฐ๋ฅ ํ ๊ธ
๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ฝํ ์ธ ์์ฒด๋ฅผ ์กฐ์ ํ ์๋ ์์ต๋๋ค.
- ๋ฎ์ ๋์ญํญ: ๋ณต์กํ UI ์์๋ฅผ ์จ๊ธฐ๊ฑฐ๋ ๋จ์ํํ๊ณ , ํน์ ๋ํํ ๊ธฐ๋ฅ์ ๋นํ์ฑํํ๊ฑฐ๋, ํ ์คํธ ์ค์ฌ ๋ฒ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋์ ๋์ญํญ: ๋ชจ๋ ํ๋ถํ ๋ฏธ๋์ด, ๋ํํ ๊ตฌ์ฑ ์์ ๋ฐ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ํ์ฑํํฉ๋๋ค.
์ด๋ ๋ ์ ๊ตํ ์ ํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ๋ฅผ ํ์๋ก ํ๋ฉฐ, ์ข ์ข ์๋ฒ ์ธก ๋ ๋๋ง(SSR) ๋๋ ๋คํธ์ํฌ ์กฐ๊ฑด์ผ๋ก ์ ์ด๋๋ ํด๋ผ์ด์ธํธ ์ธก ๊ธฐ๋ฅ ํ๋๊ทธ๋ฅผ ํฌํจํฉ๋๋ค.
6. saveData ์กด์ค
saveData ์์ฑ์ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ ์ฌ์ฉ๋์ ์ต์ํํ๋ ค๋ ์ง์ ์ ์ธ ํ์์
๋๋ค. ์ด๋ ์ ์ ์ ์ผ๋ก ์กด์ค๋์ด์ผ ํฉ๋๋ค.
connection.saveData๊ฐtrue์ธ ๊ฒฝ์ฐ, ์ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๊ณ , ์๋ ์ฌ์ ๋น๋์ค๋ฅผ ๋นํ์ฑํํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ์ดํฐ ๋๊ธฐํ ๋น๋๋ฅผ ์ค์ด๋ ๋ฑ ์๋์ผ๋ก ๋ ๊ฐ๋ฒผ์ด ๋ฐ์ดํฐ ์ ์ฝ ์กฐ์น๋ฅผ ์ ์ฉํฉ๋๋ค.effectiveType์ด ๋ ๋์ ๋์ญํญ์ ์์ฌํ๋๋ผ๋saveData๊ฐ ํ์ฑํ๋๋ฉด ๊ธฐ๋ณธ ๋์์ด์ด์ผ ํฉ๋๋ค.
const connection = navigator.connection;
function applyDataSavingMeasures() {
if (connection && connection.saveData) {
console.log('Data Saver enabled. Applying lighter experience.');
// Implement lighter experience logic here:
// e.g., load smaller images, disable animations, etc.
}
}
applyDataSavingMeasures();
connection.addEventListener('change', applyDataSavingMeasures);
๊ธ๋ก๋ฒ ๊ณ ๋ ค ์ฌํญ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์ ์ํ ๋ก๋ฉ ์ ๋ต์ ๊ตฌํํ ๋ ๋ช ๊ฐ์ง ์์๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
1. ๊ธ๋ก๋ฒ ๋คํธ์ํฌ ๋ค์์ฑ
์ธํฐ๋ท ์ธํ๋ผ๋ ์ ์ธ๊ณ์ ์ผ๋ก ํฌ๊ฒ ๋ค๋ฆ ๋๋ค. ํ ์ง์ญ์์ '์ข์'์ผ๋ก ๊ฐ์ฃผ๋๋ ๊ฒ์ด ๋ค๋ฅธ ์ง์ญ์์๋ '๋์จ'์ผ๋ก ๊ฐ์ฃผ๋ ์ ์์ต๋๋ค. ๋คํธ์ํฌ ์ ๋ณด API๋ ์ด๋ฌํ ์ผ๋ถ๋ฅผ ์ถ์ํํ๋ ๋ฐ ๋์์ด ๋์ง๋ง, ๋์ ์์ฅ์ ์ผ๋ฐ์ ์ธ ๋คํธ์ํฌ ์กฐ๊ฑด์ ์ดํดํ๋ ๊ฒ์ ์ฌ์ ํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
- ๊ฐ๋ฐ ๋์๊ตญ: ์ ํฅ ์์ฅ์ ๋ง์ ์ฌ์ฉ์๋ ์ ํ๋ ๋์ญํญ๊ณผ ๋์ ์ง์ฐ ์๊ฐ์ ๊ฐ์ง ๋ชจ๋ฐ์ผ ๋ฐ์ดํฐ์ ์์กดํฉ๋๋ค. ์ด๋ฌํ ์ฌ์ฉ์๋ฅผ ์ํด ๊ธฐ๋ฅ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ๋ก๋๋๋ ๊ฒฝํ์ ์ฐ์ ์์๋ฅผ ๋๋ ๊ฒ์ ์์ฅ ์นจํฌ์ ํฌ์ฉ์ฑ์ ์ํด ์ค์ํฉ๋๋ค.
- ์ ์ง๊ตญ: ๊ณ ์ ์ธํฐ๋ท์ด ๋ ์ผ๋ฐ์ ์ด์ง๋ง, ํนํ ๋์ด ์ง์ญ์ด๋ ํผํฌ ์๊ฐ๋์๋ ๋ชจ๋ฐ์ผ ๋คํธ์ํฌ๊ฐ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์์ต๋๋ค.
2. ์คํ๋ผ์ธ ๋ฐ ๊ฐํ์ ์ฐ๊ฒฐ
์ผ๋ถ ์ฌ์ฉ์๋ ์ ์ ๋์ ์ฐ๊ฒฐ์ด ๋๊ธธ ์ ์์ต๋๋ค. ์๋น์ค ์์ปค๋ฅผ ์ฌ์ฉํ์ฌ ์บ์ฑ ๋ฐ ์คํ๋ผ์ธ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ์ ๋ต์ ๋คํธ์ํฌ๊ฐ ๋ค์ด๋์์ ๋๋ ์ฝํ ์ธ ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฌ ์ ์ํ ๋ก๋ฉ์ ๋ณด์ํ ์ ์์ต๋๋ค.
3. ์ฅ์น ๊ธฐ๋ฅ
๋คํธ์ํฌ ์ ๋ณด API๋ ๋คํธ์ํฌ์ ์ด์ ์ ๋ง์ถ์ง๋ง, ์ฅ์น ๊ธฐ๋ฅ(CPU, ๋ฉ๋ชจ๋ฆฌ, ํ๋ฉด ํฌ๊ธฐ)๋ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๊ฐ๋ ฅํ ์ฅ์น๋ ๋ ๋ณต์กํ JavaScript๋ฅผ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ์ ๊ฐํ ์ฅ์น๋ ๋น ๋ฅธ ์ฐ๊ฒฐ์์๋ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค. ๋ณด๋ค ์ ์ฒด์ ์ธ ์ ์ํ ์ ๋ต์ ์ํด ๋คํธ์ํฌ ์ ๋ณด์ ์ฅ์น ๊ฐ์ง๋ฅผ ๊ฒฐํฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
4. ๋ฐฐํฐ๋ฆฌ ์๋ช
๋น ๋ฅธ ์ฐ๊ฒฐ์์๋ ์ง์์ ์ผ๋ก ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ฐฐํฐ๋ฆฌ๋ฅผ ์๋ชจํ ์ ์์ต๋๋ค. ๋ชจ๋ฐ์ผ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ ๋ฐฐํฐ๋ฆฌ ์๋์ ๋ฏผ๊ฐํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋คํธ์ํฌ ์ ๋ณด API์ ์ง์ ์ ์ธ ์ผ๋ถ๋ ์๋์ง๋ง, ๋ฐ์ดํฐ ์ ์ก์ ์ค์ด๋ ์ ์ํ ๋ก๋ฉ์ ๊ฐ์ ์ ์ผ๋ก ๋ฐฐํฐ๋ฆฌ ์ ์ฝ์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.
5. ์ฌ์ฉ์ ์ ์ด ๋ฐ ํฌ๋ช ์ฑ
์๋ ์ ์์ด ์ ์ตํ์ง๋ง, ์ฌ์ฉ์์๊ฒ๋ ์ด์์ ์ผ๋ก ์ด๋ ์ ๋์ ์ ์ด ๋๋ ์ ์ด๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง์ ๋ํ ์ดํด๊ฐ ์์ด์ผ ํฉ๋๋ค. ๊ฐ๋ฅํ๋ค๋ฉด ์ ์ํ ์ค์ ์ ์ฌ์ ์ํ๋ ์ต์ ์ ์ ๊ณตํ๊ฑฐ๋, ๋ ๊ฐ๋ฒผ์ด ๊ฒฝํ์ด ์ ๊ณต๋๊ณ ์์์ ์๋ฆฝ๋๋ค.
6. ๋ค์ํ ๋คํธ์ํฌ์์์ ํ ์คํธ
๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ์ ์ํ ๋ก๋ฉ ์ ๋ต์ ํ ์คํธํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ ์ข ์ข ๋ค์ํ ์ฐ๊ฒฐ ์๋(์: Fast 3G, Slow 3G, Offline)๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋ ๋คํธ์ํฌ ์ค๋กํ๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ง์ ํ ๊ธ๋ก๋ฒ ํ ์คํธ๋ฅผ ์ํด์๋ ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์ ์ค์ ์ฅ์น๋ ์ ๋ฌธ ํ ์คํธ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
7. ์ ์ง์ ํฅ์ ๋ ์ ์ง์ ์ ํ
๋คํธ์ํฌ ์ ๋ณด API๋ ์ ์ง์ ํฅ์ ํ๋ ์์ํฌ ๋ด์์ ๊ฐ์ฅ ์ ํ์ฉ๋ฉ๋๋ค. ๋ชจ๋ ์ฐ๊ฒฐ์์ ์๋ํ๋ ํ์ ์ฝํ ์ธ ์ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์์ํ ๋ค์, ๋ ๋์ ๋คํธ์ํฌ ๋ฐ ์ฅ์น ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ฌ์ฉ์๋ฅผ ์ํด ์ ์ง์ ์ผ๋ก ๋ ํ๋ถํ ๊ธฐ๋ฅ๊ณผ ๋ ๋์ ํ์ง์ ์ ์ ์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒด ๊ฒฝํ์์ ์์ํ์ฌ ๋ ์ ๋ฅํ ํ๊ฒฝ์ ์ํด ๊ธฐ๋ฅ์ ์ ๊ฑฐํ๋ ค๊ณ ์๋ํ๋ ์ ์ง์ ์ ํ๋ณด๋ค ๋ ๊ฐ๋ ฅํฉ๋๋ค.
8. ๋คํธ์ํฌ API์ ๋ฏธ๋
์น ํ๋ซํผ์ ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ฌ์์ ์๋ก์ด ์ ์ ๋ฐ ์งํ ์ค์ธ ์์ ์ ๋์ญํญ ์ถ์ API ๋๋ ๋ ์ ํํ ์ง์ฐ ์๊ฐ ์ธก์ ๊ณผ ๊ฐ์ด ๋ ์ธ๋ถํ๋ ๋คํธ์ํฌ ํต์ฐฐ๋ ฅ์ ๋์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ ์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ ์งํ๋ฉด ์ ์ํ ์ ๋ต์ ๋ฏธ๋๋ฅผ ๋๋นํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ตฌํ ๊ณผ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
๊ฐ๋ ฅํ์ง๋ง, ์ ์ํ ๋ก๋ฉ์ ๊ตฌํํ๋ ๋ฐ ์ด๋ ค์์ด ์๋ ๊ฒ์ ์๋๋๋ค.
- API ์ง์ ๋ฐ ํด๋ฆฌํ: ์ต์ ๋ธ๋ผ์ฐ์ (Chrome, Firefox, Edge, Opera)์์๋ ๋คํธ์ํฌ ์ ๋ณด API์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์์ด ์ํธํ์ง๋ง, ์ด์ ๋ฒ์ ์ด๋ ๋ ์ผ๋ฐ์ ์ธ ๋ธ๋ผ์ฐ์ ์์๋ ์ ํ์ ์ผ ์ ์์ต๋๋ค. ํญ์ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ํ์ธํ๊ณ ํ์ํ ๊ฒฝ์ฐ ํด๋ฆฌํ์ ๊ณ ๋ คํ์ญ์์ค. ๊ทธ๋ฌ๋ ์ผ๋ถ ๊ธฐ๋ณธ ๋ฉํธ๋ฆญ์ ์ฌ์ฉํ ์ ์์ ์ ์์ต๋๋ค.
- ๋ฉํธ๋ฆญ์ ์ ํ์ฑ: API๋ ์ถ์ ์น๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋คํธ์ํฌ ์กฐ๊ฑด์ ๋น ๋ฅด๊ฒ ๋ณํ ์ ์์ผ๋ฉฐ ๋ณด๊ณ ๋ ๋ฉํธ๋ฆญ์ด ํญ์ ์ฌ์ฉ์์ ์ค์๊ฐ ๊ฒฝํ์ ์๋ฒฝํ๊ฒ ๋ฐ์ํ์ง๋ ์์ ์ ์์ต๋๋ค. ๊ตฌํ์ ์ฝ๊ฐ์ ๋ถ์ ํ์ฑ์ ์ฒ๋ฆฌํ ๋งํผ ๊ฒฌ๊ณ ํด์ผ ํฉ๋๋ค.
- ๊ณผ๋ํ ์ ์: ๋น ๋ฅธ ๋คํธ์ํฌ์ ์ฌ์ฉ์์๊ฒ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ํฌ๊ฒ ์ ํ๋ ๊ฒฝํ์ด ๋ ์ ๋๋ก ๋๋ฆฐ ์ฐ๊ฒฐ์ ๋ํด ๊ณผ๋ํ๊ฒ ์ต์ ํํ์ง ์๋๋ก ์ฃผ์ํ์ญ์์ค. ์ฌ๋ฐ๋ฅธ ๊ท ํ์ ์ฐพ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๋ ผ๋ฆฌ์ ๋ณต์ก์ฑ: ์ ๊ตํ ์ ์ํ ๋ก๋ฉ ๋ ผ๋ฆฌ๋ฅผ ๊ฐ๋ฐํ๋ฉด ์ฝ๋ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค. ์ป์ ์ด์ ์ด ๊ฐ๋ฐ ๋ฐ ์ ์ง ๊ด๋ฆฌ ์ค๋ฒํค๋๋ณด๋ค ํฌ๋๋ก ํ์ญ์์ค.
- ์๋ฒ ์ธก ๋ ํด๋ผ์ด์ธํธ ์ธก ์ ์: ์ ์ ๋ ผ๋ฆฌ๊ฐ ํด๋ผ์ด์ธํธ(JavaScript ๋ฐ API ์ฌ์ฉ)์ ์๋์ง ์๋ฒ(์์ฒญ ํค๋ ๋๋ ์ฌ์ฉ์ ์์ด์ ํธ ์ค๋ํ ์ฌ์ฉ, ๊ทธ๋ฌ๋ ๋คํธ์ํฌ ์กฐ๊ฑด์๋ ๋ ์ ๋ขฐํ ์ ์์)์ ์๋์ง ๊ฒฐ์ ํฉ๋๋ค. ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ ๋ฐฉ์์ด ์ข ์ข ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค.
๊ฒฐ๋ก
๋คํธ์ํฌ ์ ๋ณด API๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ธ ๋๊ตฌ์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ฐ๊ฒฐ ํ์ง์ ์ ํํ๊ฒ ๊ฐ์งํ๊ณ ์ง๋ฅํ ์ ์ํ ๋ก๋ฉ ์ ๋ต์ ๊ตฌํํ ์ ์๋๋ก ํจ์ผ๋ก์จ, ์ฌ์ฉ์๋ ์์น๋ ๋คํธ์ํฌ ์ ๊ณต์ ์ฒด์ ๊ด๊ณ์์ด ์ต์ ์ ๊ฒฝํ์ ๋ฐ์ ์ ์๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.
์ด๋ฏธ์ง ๋ฐ ๋น๋์ค ํ์ง ์กฐ์ ๋ถํฐ ๋ฆฌ์์ค ๋ก๋ฉ ์ฐ์ ์์ ์ง์ ๋ฐ ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ ์ฝ ๊ธฐ๋ณธ ์ค์ ์กด์ค์ ์ด๋ฅด๊ธฐ๊น์ง, ๊ฐ๋ฅ์ฑ์ ๋ฌด๊ถ๋ฌด์งํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ์์ฉํ๋ฉด ์ฑ๋ฅ์ด ์ฌ์น๊ฐ ์๋ ๋ชจ๋ ์ฌ๋์ ์ํ ํ์ค์ธ ๋ณด๋ค ํฌ์ฉ์ ์ด๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์น์ ํฅํด ๋์๊ฐ ์ ์์ต๋๋ค.
์น ๊ธฐ์ ์ด ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ค์๊ฐ ๋คํธ์ํฌ ํต์ฐฐ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก ์ฝํ ์ธ ์ ๊ณต์ ๋์ ์ผ๋ก ์กฐ์ ํ๋ ๊ธฐ๋ฅ์ ๋์ฑ ์ค์ํด์ง ๊ฒ์ ๋๋ค. ๋คํธ์ํฌ ์ ๋ณด API ๋ฐ ์ ์ํ ๋ก๋ฉ ๊ธฐ์ ์ ์ ์ ์ ์ผ๋ก ํตํฉํ๋ ๊ฐ๋ฐ์๋ ์ ์ธ๊ณ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๋ง์กฑ์ํค๊ณ ์ฑ๋ฅ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ๊ฐ์ฅ ์ ๋ฆฌํ ์์น์ ์์ ๊ฒ์ ๋๋ค.